package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Comment;
import com.tanhua.dubbo.server.pojo.Publish;
import com.tanhua.dubbo.server.vo.PageInfo;

import java.util.List;

/**
 * @Author 王加鑫
 * @Date 2021/09/05 17:52
 * @Since JDK 1.8
 */
public interface QuanZiApi {

    /**
     * 查询好友状态
     */
    PageInfo<Publish> queryPublishList(Long userId, Integer page, Integer pageSize);

    /**
     * 发布动态
     * @param publish
     * @return
     */
    String savePublish(Publish publish);

    /**
     * 查询推荐用户动态
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Publish> queryRecommend(Long id, Integer page, Integer pageSize);

    /**
     * 根据id查询动态
     * @param id 动态id(Publish表的_id字段？)
     * @return
     */
    Publish queryPublishById(String id);

    /**
     * 点赞
     * @param userId
     * @param id
     * @return
     */
    Boolean likeComment(Long userId, String id);

    /**
     * 取消点赞
     * @param userId
     * @param id
     * @return
     */
    Boolean disLikeComment(Long userId, String id);

    /**
     * 查询点赞数量
     */
    Long queryLikeCount(String id);

    /**
     * 查询用户是否点赞该动态
     * @param userId
     * @param id
     * @return
     */
    Boolean queryUserIsLike(Long userId, String id);

    /**
     * 喜欢
     * @param id
     * @param id
     * @return
     */
    Boolean loveComment(Long userId, String id);

    /**
     * 取消喜欢状态
     * @param userId
     * @param id
     * @return
     */
    Boolean disLoveComment(Long userId, String id);

    /**
     * 查询喜欢数量
     * @param id
     * @return
     */
    Long queryLoveCount(String id);

    /**
     * 判断用户是否已经喜欢
     * @param userId
     * @param id
     * @return
     */
    Boolean queryUserIsLove(Long userId, String id);

    /**
     * 查询评论数量
     * @param id
     * @return
     */
    Integer queryCommentCount(String id);

    /**
     * 查询评论
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentList(String id, Integer page, Integer pageSize);

    /**
     * 发表评论
     * @param userId
     * @param id
     * @param content
     * @return
     */
    Boolean saveComment(Long userId, String id, String content);

    /**
     * 查询消息点赞列表
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryLikeCommentListByUser(Long id, Integer page, Integer pageSize);

    /**
     * 查询喜欢点赞列表
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryLoveCommentListByUser(Long id, Integer page, Integer pageSize);

    /**
     * 查询评论点赞列表
     * @param id
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Comment> queryCommentListByUser(Long id, Integer page, Integer pageSize);

    /**
     * 查询指定用户所有的动态
     * @param page
     * @param pageSize
     * @param userId
     * @return
     */
    PageInfo<Publish> queryAlbumList(Integer page, Integer pageSize, Long userId);


    List<Publish> queryPublishList(Long userId, Integer page, Integer pageSize,String sortOrder);

    /**
     * 查询publish表中所有数据(测试用)
     */
    List<Publish> queryPublishList();

    /**
     * 根据PublishId的集合查询数据，然后带上后台的分页参数
     * @param publishIds
     * @param page
     * @param pageSize
     * @param sortOrder
     * @return
     */
    List<Publish> queryPublishList(List<String> publishIds,Integer page,Integer pageSize,String sortOrder);


    /**
     * 根据PublishId的集合查询数据
     */
    List<Publish> queryPublishList(List<String> publishIds,Integer page,Integer pageSize);

    /**
     * 评论列表翻页
     * @param sortProp
     * @param page
     * @param pageSize
     * @param sortOrder
     * @param messageID
     * @return
     */
    PageInfo<Comment> queryComment(String sortProp, Integer page, Integer pageSize, String sortOrder, String messageID);
}
